package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDemo
{
    public static void main(String[] args) throws IOException
    {
        /*
        FileInputStream fis = new FileInputStream("bong.jpg");
        FileOutputStream fos = new FileOutputStream("bong1.jpg");
        int d = 0;
        int count = 0;
        while ((d = fis.read()) != -1)
        {
            fos.write(d);
            count++;
        }
        System.out.println(count);
        fis.close();
        fos.close();
        */
        copy1();
    }

    public static void copy1() throws IOException
    {
        FileInputStream fis = new FileInputStream("bong.jpg");
        FileOutputStream fos = new FileOutputStream("bong2.jpg");
        byte[] data = new byte[1024*10];   // 10kB 比较适中  不是越大越好，因为硬盘也有读写瓶颈
        int len = 0;
        long startTime = System.currentTimeMillis();
        // read(byte[] b) 返回的整形表示 读取到的字节数量 ， 如果返回-1 则表示读到了末尾
        while ((len = fis.read(data)) != -1)
        {
            fos.write(data,0,len);   // 使用这种方法写数据不会产生脏数据 ，如果直接写，可能会产生脏数据
        }
        long endTime = System.currentTimeMillis();
        System.out.println("pay time : " + (endTime-startTime) + " ms ");
        fis.close();
        fos.close();
    }

}
